<?
/**
 * Clase encargada de las búsquedas y listados de listas de reproducción.
 *
 * Además, obtiene dela BBDD las opciones necesarias para los desplegables en las interfaces de búsqueda.
 *
 * @package core
 * @version 0.1
 * @author
 * Juan Ramón González Hidalgo
 *
 * María José Prieto García
 *
 * José Ignacio Ortiz de Galisteo Romero
 */
class ListaListasReproduccion implements IIterador{

	/**
	 * Almacena el resultado de la búsqueda de ListaReproduccion.
	 *
	 * @see buscar()
	 * @var unknown_type
	 */
	private $result;

	/**
	 * Almacena el número de resultados obtenidos, independientemente de
	 * la cláusula LIMIT.
	 * @var integer
	 */
	private $num_rows=0;

	/**
	 * Objeto de conexión a la BBDD.
	 * @var MySQL
	 */
	private $MySQL;

	/**
	 * Constructor.
	 * Inicializa la conexión a la BBDD.
	 */
	public function __construct(){
		$this->MySQL = new MySQL('MYLIED');
	}

	/**
	 * Devuelve el número de ListaReproduccion almacenado en la búsqueda.
	 *
	 * Si no se ha lanzado previamente una búsqueda, el valor devuelto será NULL.
	 *
	 * @see buscar()
	 * @return integer $num_resultados Número de ListaReproduccion encontrados en buscar()
	 */
	public function num_Resultados(){
		return $this->num_rows;
	}

	/**
	 * Devuelve el puntero al inicio de la lista de ListaReproduccion.
	 */
	public function inicio(){
		mysql_data_seek($this->result, 0);
	}

	/**
	 * Devuelve el siguiente ListaReproduccion en la lista y avanza el puntero.
	 *
	 * Devuelve NULL si ya se ha llegado al último elemento.
	 *
	 * @return ListaReproduccion $ListaReproduccion El siguiente storage en la lista.
	 */
	public function siguiente(){
		if($row = @mysql_fetch_row($this->result))
			$id_storage = $row[0];
		else
			return null;

		return new ListaReproduccion($id_storage);
	}

	/**
	 * Lanza la búsqueda de ListaReproduccion aplicando los filtros pasados como parámetro.
	 *
	 * La variable local $result es actualizada con el resultado de la búsqueda.
	 *
	 * @param array $filtros Lista de filtros a aplicar a la búsqueda de ListaReproduccion.
	 */
	public function buscar($filtros = array()){
            //FB::warn($filtros);

		$Validar = new Validar();
		$filtro = "";
                $join="";

                if(isset($filtros['id']))
                        $filtro .= " AND listas_reproduccion.id = '".$filtros['id']."' ";

                if(isset($filtros['usuario']))
                        $filtro .= " AND listas_reproduccion.fk_usuario = '".$filtros['usuario']."' ";
		
                $order = " ORDER BY listas_reproduccion.id DESC ";
		$query = "SELECT SQL_CALC_FOUND_ROWS listas_reproduccion.id
				FROM listas_reproduccion
				$join
				WHERE 1
					$filtro
				GROUP BY listas_reproduccion.id
				$order
				$limit; ";

                //FB::info($query);
		$this->result = $this->MySQL->query($query);

		//Obtenemos el número total de resultados sin paginar:
		$calc_num_rows = mysql_query("SELECT FOUND_ROWS();");
		$array_num_rows = mysql_fetch_array($calc_num_rows);
		$this->num_rows = $array_num_rows[0];

	}
}
?>